package cn.melonlib.cores.model.anno;

import cn.melonlib.cores.model.enums.CachePolicy;
import cn.melonlib.cores.model.enums.QueryMode;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Documented
@Target(METHOD)
@Retention(RUNTIME)
public @interface WorkerQuery {

    /**
     * 查询执行器
     * @return
     */
    String converter() default "defaultGQLQueryWorker";
    /**
     * 注册方法的名称，默认为"<注册对象名称>_<方法名>
     * @return
     */
    String name() default "";

    /**
     * 接口需要调用模式：
     * NOCE：调用一次完结接口
     * MORE：可以多次调用接口(分页或者部分数据获取)
     * @return
     */
    QueryMode mode() default QueryMode.ONCE;

    /**
     * 接口缓存策略
     * @return
     */
    CachePolicy cachePolicy() default CachePolicy.NO_CACHE;
}
